package xc.doughnut.demo;

import java.util.StringJoiner;

public class SplicingDemo {
    public static void main(String[] args) {

        // 1、普通拼接： String字符串本身是不能发生改变的。每次拼接都会产生一个新的字符串对象
        // long start = System.currentTimeMillis();
        // String s = "";
        // for (int i = 0; i < 100000; i++) {
        //     s += "abc";
        // }
        // System.out.println(s);
        // long end = System.currentTimeMillis();
        // System.out.println("耗时：" + (end - start)); // 3122


        // 2、StringBuilder：里面的内容是可变的，提高拼接效率
        // StringBuilder sb = new StringBuilder();
        // long start = System.currentTimeMillis();
        // for (int i = 0; i < 100000; i++) {
        //     sb.append("abc");
        // }
        // System.out.println(sb.toString());
        // long end = System.currentTimeMillis();
        // System.out.println("耗时：" + (end - start)); // 25


        // 3、StringJoiner：比如数组转集合时使用
        int[] arr = {1, 2, 3};
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        System.out.println(sb);  // [1, 2, 3]

        // 改进方法
        int[] arr2 = {1, 2, 3};
        StringJoiner sj = new StringJoiner(", ", "[", "]");  // 参数 1、分隔符 2、前缀 3、后缀
        for (int i = 0; i < arr2.length; i++) {
            sj.add("" + arr2[i]);
        }
        System.out.println(sj);

    }
}
